-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Feature/accessor improvement #11079
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
FBumann
wants to merge
12
commits into
pydata:main
Choose a base branch
from
FBumann:feature/accessor-improvement
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Feature/accessor improvement #11079
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Thank you for opening this pull request! It may take us a few days to respond here, so thank you for being patient. |
The pixi workspace includes pyproject.toml as source metadata for the
local xarray package (via `xarray = { path = "." }`). When pyproject.toml
changes, the cached pixi.lock becomes invalid, causing CI failures with
"lock-file not up-to-date with the workspace".
This fix adds pyproject.toml to the cache key hash, ensuring the lock
file is regenerated when either pixi.toml or pyproject.toml changes.
4 tasks
Member
This reverts commit 7cea824.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
API design
Automation
Github bots, testing workflows, release automation
topic-DataTree
Related to the implementation of a DataTree class
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
whats-new.rstapi.rstSummary
Add typed properties for external accessor packages (hvplot, cf-xarray, pint-xarray, rioxarray, xarray-plotly), enabling full IDE support including autocompletion, parameter hints, docstrings, and go-to-definition.
Problem
External accessor packages currently have no IDE support:
.plotThis affects every accessor package: hvplot, cf-xarray, pint-xarray, rioxarray, xarray-plotly, and the entire xarray-contrib ecosystem.
Solution
Add typed properties with lazy imports on
DataArray,Dataset, andDataTree:Key behaviors
hasattr()returnsFalsefor uninstalled packages - Clean runtime introspectionHelpful error messages when accessing uninstalled accessors:
External packages don't overwrite the typed properties - xarray's
register_*_accessorskips registration for known external accessors, preserving IDE support.Full IDE support for installed packages - autocompletion, parameter hints, docstrings all work.
Supported accessors
hvplotcfpintrioplotlyFiles changed
xarray/accessors.py(new) - Accessor registry and lazy loaderxarray/core/dataarray.py- Added typed accessor propertiesxarray/core/dataset.py- Added typed accessor propertiesxarray/core/datatree.py- Added typed accessor propertiesxarray/core/extensions.py- Skip registration for known external accessorspyproject.toml- Added mypy ignores for external packagesBackward compatibility
register_*_accessorcontinue to work (registration is silently skipped for known accessors)Example usage
Related